const storage = require('../../utils/storage.js');
const imageUtil = require('../../utils/image.js');
const level = require('../../utils/level.js');
const api = require('../../utils/api.js');  // 🔥 新增：引入API模块

Page({
  data: {
    statusBarHeight: 0,
    isLoggedIn: false,  // 🔐 登录状态
    userInfo: {
      nickname: '用户0876',
      signature: '未知 | 0岁 这个人很懒，什么都没留下',
      avatar: '/images/icons/avatar.png',
      likes: 0,
      fans: 0,  // 🔥 粉丝数实际显示的是好友数量（参考Flutter项目）
      points: '0',
      levelName: '追随者'  // 新增：等级名称
    },
    friendCount: 0,  // 🔥 新增：好友数量（用于显示为"粉丝数"）
    menuList: [
      // 🔥 已隐藏：活动申请用户管理
      // { id: 1, icon: '/images/user.png', title: '活动申请用户管理', url: '' },
      { id: 2, icon: '/images/recharge.png', title: '积分充值', url: '' },
      // 🔥 已隐藏：等级和积分制度规则（微信免费开放）
      // { id: 3, icon: '/images/level.png', title: '等级和积分制度规则', url: '' },
      { id: 4, icon: '/images/security.png', title: '账号安全', url: '' },
      { id: 5, icon: '/images/support.png', title: '反馈与客服', url: '' },
      { id: 6, icon: '/images/id-card.png', title: '实名认证', status: '未认证', url: '' },
      { id: 7, icon: '/images/setting.png', title: '设置', url: '' }
    ]
  },

  /**
   * 🎂 根据生日计算年龄（与编辑页面保持一致）
   * @param {string} birthday - 生日字符串，格式如 "1990-05-15"
   * @returns {number} 年龄
   */
  calculateAge(birthday) {
    if (!birthday) return 0;
    const birthDate = new Date(birthday);
    const today = new Date();
    let age = today.getFullYear() - birthDate.getFullYear();
    const monthDiff = today.getMonth() - birthDate.getMonth();
    if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < birthDate.getDate())) {
      age--;
    }
    return age;
  },

  /**
   * 🎯 数字格式化函数 - 学习自 Flutter playtrue3 项目
   * 格式化规则：
   * - >= 10万：显示1位小数w（去掉末尾的.0）
   * - >= 1万：显示2位小数w（去掉末尾多余的0）
   * - >= 1千：加逗号分隔
   * - < 1千：直接显示
   */
  formatNumber(number) {
    if (number >= 100000) {
      // 超过10万：显示1位小数w
      const result = number / 10000.0;
      let formatted = result.toFixed(1);
      // 去掉末尾的.0
      if (formatted.endsWith('.0')) {
        formatted = formatted.substring(0, formatted.length - 2);
      }
      return formatted + 'w';
    } else if (number >= 10000) {
      // 1万-10万：显示2位小数w
      const result = number / 10000.0;
      let formatted = result.toFixed(2);
      // 去掉末尾多余的0（例如: 1.20 -> 1.2, 1.00 -> 1）
      formatted = formatted.replace(/\.?0+$/, '');
      return formatted + 'w';
    } else if (number >= 1000) {
      // 1千-1万：加逗号分隔
      return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
    } else {
      return number.toString();
    }
  },

  onLoad() {
    // 获取系统状态栏高度
    const windowInfo = wx.getWindowInfo();
    this.setData({
      statusBarHeight: windowInfo.statusBarHeight
    });
    
    // 加载用户信息
    this.loadUserInfo();
  },

  onShow() {
    // 🔔 自动初始化通知组件（由 app.js 全局处理）
    const app = getApp();
    app.autoInitNotification();
    
    // 每次显示页面时重新加载用户信息（从编辑页返回时可以更新）
    this.loadUserInfo();
  },

  // 加载用户信息
  loadUserInfo() {
    // 🔐 检查登录状态
    const isLoggedIn = storage.isLoggedIn();
    const userData = storage.getUserInfo();
    
    if (!isLoggedIn || !userData) {
      console.log('⚠️ 用户未登录，显示默认信息');
      this.setData({
        isLoggedIn: false,
        userInfo: {
          nickname: '点击下方按钮登录',
          signature: '登录后体验更多精彩功能',
          avatar: '/images/icons/avatar.png',
          likes: 0,
          fans: 0,
          points: '0',
          levelName: '游客'
        }
      });
      return;
    }
    
    // 用户已登录
    this.setData({ isLoggedIn: true });
    
    if (userData) {
      console.log('📊 =============== 加载用户信息 ===============');
      console.log('📝 原始用户数据:', userData);
      console.log('💰 原始积分:', userData.userPoints);
      console.log('❤️ 原始点赞:', userData.userLikes);
      console.log('👥 原始粉丝:', userData.userFollowers);
      console.log('🎂 生日:', userData.userBirthday);
      
      // 🎂 根据生日计算年龄（与编辑页面保持一致）
      const displayAge = this.calculateAge(userData.userBirthday);
      console.log('🎂 根据生日计算的年龄:', displayAge);
      
      // 组装签名文本：性别 | 年龄岁 签名
      const signatureText = `${userData.userGender || '未知'} | ${displayAge}岁 ${userData.userSignature || '这个人很懒，什么都没留下'}`;
      
      // 🎯 使用 Flutter playtrue3 的数字格式化逻辑
      const userPoints = userData.userPoints || 0;
      const userLikes = userData.userLikes || 0;
      
      const pointsDisplay = this.formatNumber(userPoints);
      const likesDisplay = this.formatNumber(userLikes);
      
      // 🎯 使用等级工具类计算等级名称
      const levelName = level.getLevelNameFromPoints(userPoints);
      
      console.log('✨ 格式化后的数据:');
      console.log('  💰 积分显示:', pointsDisplay, '（原始值:', userPoints, '）');
      console.log('  ❤️ 点赞显示:', likesDisplay, '（原始值:', userLikes, '）');
      console.log('  🏆 等级名称:', levelName);
      console.log('📊 =============== 加载完成 ===============');
      
      // 🔥 先读取缓存的好友数量，避免显示0的闪烁
      const cachedFriendCount = storage.getFriendCount();
      const cachedFansDisplay = this.formatNumber(cachedFriendCount);
      
      this.setData({
        userInfo: {
          nickname: userData.username || '用户',
          signature: signatureText,
          avatar: imageUtil.processAvatar(userData.userAvatarUrl), // 🔥 使用图片工具类处理头像
          gender: userData.userGender,  // 🔥 性别数据（用于显示性别图标）
          likes: likesDisplay,
          fans: cachedFansDisplay,  // 🔥 先显示缓存的好友数量，避免闪烁
          points: pointsDisplay,
          levelName: levelName
        },
        friendCount: cachedFriendCount  // 🔥 同时更新 friendCount
      });
      
      // 🔥 获取好友数量（用于显示为"粉丝数"，参考Flutter项目）
      this.loadFriendCount();
      
      // 更新实名认证状态
      const realNameAuth = userData.extraData?.realNameAuth;
      if (realNameAuth && realNameAuth.verified) {
        const menuList = this.data.menuList.map(item => {
          if (item.id === 6) {
            return { ...item, status: '已认证' };
          }
          return item;
        });
        this.setData({ menuList });
      }
    } else {
      console.warn('⚠️ 未找到用户信息，请先登录');
    }
  },

  /**
   * 🔥 获取好友列表数量（参考Flutter项目实现）
   * 按照Flutter项目的逻辑，"粉丝数"实际显示的是好友数量
   */
  loadFriendCount() {
    console.log('👥 =============== 开始获取好友列表数量 ===============');
    
    const userData = storage.getUserInfo();
    if (!userData || !userData.userid) {
      console.warn('❌ 用户ID为空，无法获取好友列表');
      return;
    }
    
    const userId = userData.userid;
    console.log('👤 当前用户ID:', userId);
    
    // 调用好友列表API
    api.getFriendList(userId)
      .then(response => {
        console.log('✅ 好友列表获取成功');
        console.log('📊 完整响应:', response);
        
        const friendCount = response.count || 0;
        console.log('👥 好友数量:', friendCount);
        
        // 🔥 缓存好友数量到本地存储
        storage.saveFriendCount(friendCount);
        
        // 格式化好友数量
        const fansDisplay = this.formatNumber(friendCount);
        console.log('📊 格式化后的粉丝数:', fansDisplay);
        
        // 🔥 更新UI，将好友数量显示为"粉丝数"（与Flutter项目逻辑一致）
        this.setData({
          friendCount: friendCount,
          'userInfo.fans': fansDisplay
        });
        
        console.log('✅ 好友数量已更新到UI并缓存，显示为"粉丝数":', fansDisplay);
      })
      .catch(error => {
        console.error('❌ 好友列表获取失败:', error);
        // 失败时保持缓存的值，不重置为0
        console.log('⚠️ API失败，保持缓存的好友数量');
      });
    
    console.log('👥 =============== 好友列表数量获取结束 ===============');
  },

  // 跳转到编辑页面
  goToEdit() {
    // 🔐 检查登录状态
    if (!this.data.isLoggedIn) {
      console.log('⚠️ 用户未登录，提示登录');
      wx.showModal({
        title: '需要登录',
        content: '编辑个人信息需要先登录哦~',
        confirmText: '去登录',
        cancelText: '稍后',
        success: (res) => {
          if (res.confirm) {
            wx.navigateTo({
              url: '/pages/login/index'
            });
          }
        }
      });
      return;
    }
    
    // 已登录，跳转到编辑页面
    wx.navigateTo({
      url: '/pages/edit-profile/index'
    });
  },

  // 跳转到用户主页
  goToUserInfo() {
    wx.navigateTo({
      url: '/pages/user-info/index'
    });
  },

  /**
   * 🔥 跳转到好友列表（点击粉丝数时触发）
   * 参考Flutter项目：点击粉丝数跳转到消息页面的"我的好友"标签页
   */
  goToFriendList() {
    console.log('👥 =============== 跳转到好友列表 ===============');
    console.log('📊 当前好友数量:', this.data.friendCount);
    
    // 跳转到消息页面，指定打开"我的好友"标签页（tab=0）
    wx.navigateTo({
      url: '/pages/message/index?tab=0',
      success: () => {
        console.log('✅ 跳转成功：消息页面 -> 我的好友');
      },
      fail: (err) => {
        console.error('❌ 跳转失败:', err);
        wx.showToast({
          title: '跳转失败',
          icon: 'none'
        });
      }
    });
  },

  // 菜单项点击
  onMenuTap(e) {
    const { id } = e.currentTarget.dataset;
    
    // 🔥 已隐藏：活动申请用户管理
    // if (id === 1) {
    //   wx.navigateTo({
    //     url: '/pages/activity-application-manage/index'
    //   });
    //   return;
    // }
    
    // 💰 积分充值
    if (id === 2) {
      wx.navigateTo({
        url: '/pages/funds/index'
      });
      return;
    }
    
    // 🔥 已隐藏：等级和积分制度规则（微信免费开放）
    // if (id === 3) {
    //   wx.navigateTo({
    //     url: '/pages/rules/index'
    //   });
    //   return;
    // }
    
    // 账号安全
    if (id === 4) {
      wx.navigateTo({
        url: '/pages/security/index'
      });
      return;
    }
    
    // 反馈与客服
    if (id === 5) {
      wx.navigateTo({
        url: '/pages/feedback/index'
      });
      return;
    }
    
    // 实名认证
    if (id === 6) {
      wx.navigateTo({
        url: '/pages/verify/index'
      });
      return;
    }
    
    // 设置
    if (id === 7) {
      wx.navigateTo({
        url: '/pages/settings/index'
      });
      return;
    }
    
    wx.showToast({
      title: '功能开发中',
      icon: 'none'
    });
  },

  // 🔐 跳转到登录页
  goToLogin() {
    console.log('🔐 跳转到登录页面');
    wx.navigateTo({
      url: '/pages/login/index'
    });
  },

  // 退出登录
  logout() {
    wx.showModal({
      title: '提示',
      content: '确定要退出登录吗？',
      success: (res) => {
        if (res.confirm) {
          console.log('👋 开始退出登录流程...');
          
          // 🔥 1. 断开融云IM连接
          const app = getApp();
          if (app && app.disconnectRongCloud) {
            app.disconnectRongCloud();
          }
          
          // 🔥 2. 清除用户信息和融云Token
          storage.clearUserInfo();
          console.log('✅ 用户信息已清除');
          console.log('✅ 融云连接已断开');
          
          // 🔥 3. 重新加载页面，显示未登录状态
          this.loadUserInfo();
          
          wx.showToast({
            title: '已退出登录',
            icon: 'success'
          });
        }
      }
    });
  }
});

